草庐IT

ML 方法

全部标签

windows - 以编程方式终止并重新启动 explorer.exe 的最干净的方法是什么?

大家好我正在开发一个Windows程序,其安装需要重新启动explorer.exe。我知道“重新启动计算机以完成安装”是此处的标准方法,但我希望我的安装程序为用户提供仅重新启动资源管理器的选项,以便他们可以立即开始使用我的程序。最好的方法是什么?当然,我可以找到并终止该过程,但这似乎很恶心。是否有一些技巧可以让Explorer认为用户正在注销并干净地关闭?谢谢! 最佳答案 这是MSI安装吗?您是否考虑过使用RestartManager?重启管理器将检测哪些进程正在打开文件/句柄并需要重启,并允许您自动停止/启动这些进程而无需重启。

windows - 这是消除警告 C4945(已从另一个程序集导入的符号)的正确方法吗?

我有一个.net解决方案(用C++/CLI编写),它引用了一些.dll项目,如下所示:MainProject->ProjectA->ProbjectBMainProject->ProjectB最初我从MainProject中引用了ProjectA和ProjectB,这给了我上面提到的警告。我可以通过从ProjectMain中删除对ProjectB的引用来删除警告,但这会使MainProject依赖于ProjectB变得不那么明显。这是消除警告的正确做法吗? 最佳答案 笼统地说,一个依赖系统可以用directedgraph来描述。其中

c# - 在内存中操作文本文件的最佳方法 : read as byte[] first? 读取为 File.ReadAllText() 然后另存为二进制文件?

我需要更改内存中的文件,目前我使用文件流和二进制读取器将文件读入内存中的byte[]。我想知道更改内存中的文件、将byte[]转换为字符串、进行更改并执行Encoding.GetBytes()的最佳方法是什么?或者首先使用File.ReadAllText()然后使用Encoding.GetBytes()将文件作为字符串读取?或者任何方法都可以在没有警告的情况下起作用?有什么特别的方法吗?我需要用额外的字符或替换字符串替换文件中的特定文本,大约有100,000个文件。可靠性优于效率。文件是类似于HTML的文本,而不是二进制文件。 最佳答案

远程对象的 C++ 调用方法(类似于 RPC)

我正在寻找一个RPC库,它允许我在另一个进程(在Windows上)中调用一个对象的成员函数。我目前遇到的问题是一些服务器端对象已经存在并且有多个实例。服务器应该能够将指针/标识符传递给实现代理的客户端,然后将调用定向到远程对象实例。所以我基本上想要的是这样的:Client:TestProxytest=RemoteTestManager.GetTestById(123);test.echo("bla");其中Test的实例已经存在于服务器上,并且RemoteTestManager是客户端在另一个rpc调用中获得的服务器上的管理器类。此外,它最好在命名管道上运行,因为同一台机器上可以有多个

linux - 在 windows 和 linux 中分发项目的最佳方法是什么?

所以有一个特定的jython项目需要一些依赖项,例如Jenkins,某种颠覆,这需要在Windows上完成。考虑使用pip来帮助安装所有这些项目对我来说是否理智,或者我应该寻找其他地方,例如NSIS?更新:我真的应该换个说法——我深夜问这个问题是我的错。有一个具有以下依赖项的自动化测试项目:JavaJDK杰通Ant机器人框架颠覆Jenkins我个人更喜欢在Linux上运行,但需要使用它的人通常是Windows用户。我有足够的信心编写一个脚本来在Linux上安装所有这些,但我想要的是有一个脚本/安装程序来安装相关工具。我更愿意用一个脚本来完成所有这些——在Ubuntu上使用apt-get

c++ - 在 WinAPI 中为控制台应用程序处理窗口关闭事件的最简单方法是什么?

我正在使用WinAPI在C++中编写一个控制台多进程应用程序。所以我有Dispatcher(例如“Parent”)和Client(例如“Child”)进程。两个进程都是同步的:它们使用信号量、事件、互斥量和管道(所有这些都是标准的WinAPI句柄)。当用户键入“exit”命令时应用程序停止。如果用户这样做,调度程序进程会通知它的子进程,然后子进程释放其资源并执行另一个退出前程序以正确退出。但是有一件事困扰着我:如果用户按下窗口“关闭”按钮会发生什么?如果是这样,我应该听关闭事件,然后执行我的资源释放过程。处理窗口关闭事件的最简单方法是什么? 最佳答案

创建文件夹/目录的跨平台方法?

有没有办法使用C语言“在代码中”创建跨平台的文件夹/目录?还是我必须使用预处理器来说明要使用哪种方法? 最佳答案 你需要一个#define来做到这一点。为了让您的代码看起来干净,您需要使用一个定义Linux函数的函数,以便在针对Windows进行编译时将其转换为等效的Windows函数。在源文件的顶部,您将在Windows特定部分中找到它:#include#definemkdir(dir,mode)_mkdir(dir)然后你可以像这样调用这个函数:mkdir("/tmp/mydir",0755);以下是一些可能有用的其他内容:#d

python - 在 python 2.3 上,Windows 执行具有多个参数和路径空格的程序(如 ghostscript)的最佳方法是什么?

肯定有某种抽象允许这样做吗?这本质上就是命令cmd=self._ghostscriptPath+'gswin32c-q-dNOPAUSE-dBATCH-sDEVICE=tiffg4-r196X204-sPAPERSIZE=a4-sOutputFile="'+tifDest+""+pdfSource+'"'os.popen(cmd)这种方式对我来说真的很脏,一定有一些pythonic方式 最佳答案 使用subprocess,它取代了os.popen,尽管它不是一个抽象概念:fromsubprocessimportPopen,PIPEo

windows - 将 x32 lib 与 x64 进程集成的最佳方法是什么(无需将 lib 转换为 x64)?

我继承了一个在x32中编译的库,但我无法将其编译为x64。我认为可能是用x32进程封装lib,然后通过调用CreateProcess函数winapi在x64进程中运行它。然后我将使用共享内存将API库x32接口(interface)之间的数据传输到x64进程。我是不是漏掉了什么(看起来很复杂)? 最佳答案 他们的回答是你不能直接这样做。进程是32位或64位的。64位进程无法加载32位代码。是的,您必须在32位进程中运行32位代码,并在它与64位进程之间使用某种类型的接口(interface)。根据您的代码,这可能需要大量工作。执行此

c++ - MsiOpenProduct 是从已安装产品读取属性的正确方法吗?

给定一个MSI产品代码,我想从一个已安装的产品中获取升级代码(以及其他属性)。我已通过调用MsiOpenProduct方法,然后调用MsiGetProductProperty()来尝试此操作。一个(缩写的)示例如下所示:MSIHANDLEhandle=NULL;MsiOpenProduct(strProductCode,&handle);CStringstrUpgradeCode;MsiGetProductProperty(handle,_T("UpgradeCode"),strUpgradeCode.GetBuffer(GUID_LENGTH),&dwSize);strUpgrade